package cn.tedu.thread;

public class Test2 {
    public static void main(String[] args) {
        //创建目标对象
        Myticket3 a=new Myticket3();
        //启动线程
        Thread t1=new Thread(a,"窗口1");
        Thread t2=new Thread(a,"窗口2");
        Thread t3=new Thread(a,"窗口3");
        Thread t4=new Thread(a,"窗口4");
        t1.start();
        t2.start();
        t3.start();
        t4.start();
    }
}
//实现接口,实现多线程编程
//--需求：4个窗口，卖100张票
class Myticket3 implements Runnable{
    int tickets=100;//定义变量，记录票数
    //开始卖票业务
    Object obj=new Object();
    String a="rose";
    @Override
    //把方法加了关键字，实现了同步方法，同一时刻线程是独占资源，没人抢，提高了数据安全
    //synchronized public void run(){}
    //关键字还可以修饰代码块，实现同步代码块，考虑两点：锁的位置+锁的对象（可以任意，只要是通一个对象）
     public void run() {
        //一直卖票
        while (true){//死循环，一定要配合出口！！
           // synchronized (obj){//可以，全局的唯一的成员变量
            synchronized (this)  {//可以，全局的唯一的成员变量
            if(tickets>0){
                try {
                    Thread.sleep(100);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println(Thread.currentThread().getName()+"==="+tickets--);
            }else{
                break;
            }
            }
        }
    }

}